package com.py.credit.service;

import com.py.credit.entity.Column;
import com.py.credit.entity.DissentProcess;
import com.py.credit.entity.Table;
import com.py.framework.core.common.Page;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author YaoS
 * @program project2.6
 * @classname DissentProcessService
 * @description 前台异议处理服务接口
 * @date 2019-01-17 14:24
 */
public interface DissentProcessService {

    /**
     * 功能描述: 新增异议修复申请
     *
     * @param dissentProcess 异议申请表单对象
     * @return int 表单id
     * @author YaoS
     * @date 19/1/21 15:53
     */
    void add(DissentProcess dissentProcess);

    /**
     * 功能描述: 保存异议修复文件
     *
     * @param id      主键id
     * @param fileUrl 文件路径
     * @return
     * @author YaoS
     * @date 19/1/21 16:25
     */
    void saveFile(int id, String fileUrl);

    /**
     * 功能描述: 查询数据拥有人id
     *
     * @param resourceId 表名
     * @param recordId   数据id
     * @return String
     * @author YaoS
     * @date 19/1/21 17:25
     */
    String selectDataOwner(String resourceId, String recordId);

    /**
     * 功能描述: 获取前台异议处理数据
     *
     * @param id 业务数据id
     * @return DissentProcess 申请对象
     * @author YaoS
     * @date 19/1/21 17:38
     */
    DissentProcess getFrontDissentProcess(String id);

    /**
     * 功能描述: 查询审核历史详情
     *
     * @param tableName 表名
     * @param recordId  表数据id
     * @return HashMap 值
     * @author YaoS
     * @date 19/1/28 20:37
     */
    HashMap<String, Object> selectReviewData(String tableName, String recordId);

    /**
     * 功能描述: 更新业务审核结果
     *
     * @param id         申请id
     * @param status     审核结果
     * @param finishTime 审核结束时间
     * @return
     * @author YaoS
     * @date 19/1/21 17:42
     */
    void updateStatus(int id, String status, String finishTime);

    /**
     * 功能描述: 根据id查询需要异议处理的数据
     *
     * @param tableName   表名
     * @param recordId    资源id
     * @param showColumns 展示字段
     * @return Map<String                                                               ,                                                               Object> 查询需要处理的数据
     * @author YaoS
     * @date 19/1/21 19:34
     */
    Map<String, Object> selectRecordsById(String tableName, Integer recordId, List<String> showColumns);

    /**
     * 功能描述: 删除异议业务数据
     *
     * @param tableId  表资源id
     * @param recordId 数据id
     * @return
     * @author YaoS
     * @date 19/1/21 20:34
     */
    void deleteData(int tableId, int recordId);

    /**
     * TODO 未完成
     */
    boolean updateData(int tableId, int recordId, String params, Table table, List<Column> columns);

    /**
     * 功能描述: 查询当前用户异议数据记录
     *
     * @param tyshxydm  当前企业统一社会信用代码
     * @param startTime 申请时间
     * @return List 查询结果
     * @author YaoS
     * @date 19/1/22 17:35
     */
    List<Map<String, Object>> selectHistoryListForPage(String tyshxydm, String type, String startTime, String endTime, Page page);

}
